<?php

include_once '../commons/Conexion.php';
include_once '../model/Constructora.php';
include_once '../model/Obra.php';
include_once '../model/Etapa.php';
include_once 'ConstrucDao.php';
include_once 'ObraDao.php';

/**
 * Description of EtapaDao
 *
 * @author User
 */
class EtapaDao {

    private $tEtapa = 't003_etapa';

    function __construct() {
        
    }

    /* @var $oEtapa Etapa 
     * @result $oEtapa Etapa
     */

    public function saveEtapa($oEtapa = null) {

        $oEtapa->setId(0);
        try {
            $query = 'insert into %s (nb_nombre,co_contrato,fe_inicio,fe_fin,ca_viviendas,ca_edificios,ca_personas,fk_obra) 
                values ("%s","%s","%s","%s",%d,%d,%d,%d);';

            $query = sprintf($query, $this->tEtapa, $oEtapa->getNombre(), $oEtapa->getContrato(), $oEtapa->getFechaInicio(), $oEtapa->getFechaFin(), $oEtapa->getViviendas(), $oEtapa->getEdificios(), $oEtapa->getPersonas(), $oEtapa->getObra()->getId());

            $conn = new Conexion();
            $conn->open();
            $conn->query($query);

            $query = 'select l.co_id from %s l where l.nb_nombre = "%s" and fk_obra=%d;';

            $query = sprintf($query, $this->tEtapa, $oEtapa->getNombre(), $oEtapa->getObra()->getId());

            $result = $conn->query($query);

            while ($fila = @mysql_fetch_array($result, MYSQL_ASSOC)) {
                $oEtapa->setId($fila['co_id']);
            }

            $conn->close();
        } catch (Exception $e) {
            
        }

        return $oEtapa;
    }

    /*
     * @var $lId long
     * @result $oEtapa Etapa
     */

    public function getEtapaById($lId = 0) {

        $oEtapa = null;

        try {
            $query = 'select l.* from %s l where l.co_id = %d;';
            $query = sprintf($query, $this->tEtapa, $lId);

            $conn = new Conexion();
            $conn->open();

            $result = $conn->query($query);

            if (isset($result)) {
                $dao = new ObraDao();
                while ($fila = @mysql_fetch_array($result, MYSQL_ASSOC)) {
                    $oEtapa = new Etapa();
                    $oEtapa->setId($fila['co_id']);
                    $oEtapa->setNombre($fila['nb_nombre']);
                    $oEtapa->setContrato($fila['co_contrato']);
                    $oEtapa->setFechaInicio($fila['fe_inicio']);
                    $oEtapa->setFechaFin($fila['fe_fin']);
                    $oEtapa->setEdificios($fila['ca_edificios']);
                    $oEtapa->setViviendas($fila['ca_viviendas']);
                    $oEtapa->setPersonas($fila['ca_personas']);
                    $oEtapa->setObra($dao->getObraById($fila['fk_obra']));
                }
            }

            $conn->close();
        } catch (Exception $e) {
            
        }
        return $oEtapa;
    }
    
    /*
     * @var $sContrato string
     * @result $oEtapa Etapa
     */

    public function getEtapaByContrato($sContrato = 0) {

        $oEtapa = null;

        try {
            $query = 'select l.* from %s l where l.co_contrato = "%s";';
            $query = sprintf($query, $this->tEtapa, $sContrato);

            $conn = new Conexion();
            $conn->open();

            $result = $conn->query($query);

            if (isset($result)) {
                $dao = new ObraDao();
                while ($fila = @mysql_fetch_array($result, MYSQL_ASSOC)) {
                    $oEtapa = new Etapa();
                    $oEtapa->setId($fila['co_id']);
                    $oEtapa->setNombre($fila['nb_nombre']);
                    $oEtapa->setContrato($fila['co_contrato']);
                    $oEtapa->setFechaInicio($fila['fe_inicio']);
                    $oEtapa->setFechaFin($fila['fe_fin']);
                    $oEtapa->setEdificios($fila['ca_edificios']);
                    $oEtapa->setViviendas($fila['ca_viviendas']);
                    $oEtapa->setPersonas($fila['ca_personas']);
                    $oEtapa->setObra($dao->getObraById($fila['fk_obra']));
                }
            }

            $conn->close();
        } catch (Exception $e) {
            
        }
        return $oEtapa;
    }

    /*
     * @var $sName string
     * @var $idObra long
     * @result $oEtapa Etapa
     */

    public function getEtapaByName($sName = "", $idObra = 0) {

        $oEtapa = null;

        try {

            $query = 'select l.* from %s l where l.nb_nombre = "%s" and l.fk_obra=%d;';
            $query = sprintf($query, $this->tEtapa, $sName, $idObra);

            $conn = new Conexion();
            $conn->open();

            $result = $conn->query($query);

            if (isset($result)) {
                $dao = new ObraDao();
                while ($fila = @mysql_fetch_array($result, MYSQL_ASSOC)) {
                    $oEtapa = new Etapa();
                    $oEtapa->setId($fila['co_id']);
                    $oEtapa->setNombre($fila['nb_nombre']);
                    $oEtapa->setContrato($fila['co_contrato']);
                    $oEtapa->setFechaInicio($fila['fe_inicio']);
                    $oEtapa->setFechaFin($fila['fe_fin']);
                    $oEtapa->setEdificios($fila['ca_edificios']);
                    $oEtapa->setViviendas($fila['ca_viviendas']);
                    $oEtapa->setPersonas($fila['ca_personas']);
                    $oEtapa->setObra($dao->getObraById($fila['fk_obra']));
                }
            }

            $conn->close();
        } catch (Exception $e) {
            
        }
        return $oEtapa;
    }

    /*
     * 
     * @return $listEtapa List<Etapa>
     */

    public function getEtapas() {

        $listEtapa = null;

        try {
            $query = 'select l.* from %s l order by l.co_id';
            $query = sprintf($query, $this->tEtapa);

            $conn = new Conexion();
            $conn->open();

            $result = $conn->query($query);

            $listEtapa = array();
            $i = 0;
            if (isset($result)) {
                while ($fila = @mysql_fetch_array($result, MYSQL_ASSOC)) {
                    $oEtapa = new Etapa();
                    $oEtapa->setId($fila['co_id']);
                    $oEtapa->setNombre($fila['nb_nombre']);
                    $oEtapa->setContrato($fila['co_contrato']);
                    $oEtapa->setFechaInicio($fila['fe_inicio']);
                    $oEtapa->setFechaFin($fila['fe_fin']);
                    $oEtapa->setEdificios($fila['ca_edificios']);
                    $oEtapa->setViviendas($fila['ca_viviendas']);
                    $oEtapa->setPersonas($fila['ca_personas']);
                    $listEtapa[$i++] = $oEtapa;
                }
            }
            $conn->close();
        } catch (Exception $e) {
            
        }

        return $listEtapa;
    }

    /*
     * @var $lId long
     * @return $listEtapa List<Etapa>
     */

    public function getEtapasByObra($lId = 0) {

        $listEtapa = null;

        try {
            $query = 'select l.* from %s l where l.fk_obra = %d order by l.co_id';
            $query = sprintf($query, $this->tEtapa, $lId);

            $conn = new Conexion();
            $conn->open();

            $result = $conn->query($query);

            $listEtapa = array();
            $i = 0;
            if (isset($result)) {
                while ($fila = @mysql_fetch_array($result, MYSQL_ASSOC)) {
                    $oEtapa = new Etapa();
                    $oEtapa->setId($fila['co_id']);
                    $oEtapa->setNombre($fila['nb_nombre']);
                    $oEtapa->setContrato($fila['co_contrato']);
                    $oEtapa->setFechaInicio($fila['fe_inicio']);
                    $oEtapa->setFechaFin($fila['fe_fin']);
                    $oEtapa->setEdificios($fila['ca_edificios']);
                    $oEtapa->setViviendas($fila['ca_viviendas']);
                    $oEtapa->setPersonas($fila['ca_personas']);
                    $listEtapa[$i++] = $oEtapa;
                }
            }
            $conn->close();
        } catch (Exception $e) {
            
        }

        return $listEtapa;
    }

    /*
     * @var $oEtapa Etapa
     * @result $oEtapa Etapa
     */

    public function updateEtapa($oEtapa) {

        try {
            $query = 'update %s l set l.nb_nombre = "%s", l.co_contrato = "%s", l.fe_inicio = "%s", l.fe_fin = "%s", 
                l.ca_viviendas = %d, l.ca_edificios = %d, l.ca_personas = %d, fk_obra = %d where  l.co_id = %d;';
            $query = sprintf($query, $this->tEtapa, 
                    $oEtapa->getNombre(), $oEtapa->getContrato(), $oEtapa->getFechaInicio(), $oEtapa->getFechaFin(), 
                    $oEtapa->getViviendas(), $oEtapa->getEdificios(), $oEtapa->getPersonas(), 
                    $oEtapa->getObra()->getId(), $oEtapa->getId());

            $conn = new Conexion();
            $conn->open();
            $conn->query($query);
            $conn->close();
        } catch (Exception $e) {
            $oEtapa = null;
        }

        return $oEtapa;
    }

    /*
     * @var $oEtapa Etapa 
     * @return $result boolean
     */

    public function deleteEtapa($oEtapa) {

        $result = false;
        try {
            $query = 'delete from %s where co_id = %d';
            $query = sprintf($query, $this->tEtapa, $oEtapa->getId());

            $conn = new Conexion();
            $conn->open();
            $conn->query($query);
            $conn->close();

            $result = true;
        } catch (Exception $e) {
            
        }

        return $result;
    }

}

?>
